//class Solution {
//    public int[] sortedSquares(int[] nums) {
//        int[] outs = new int[nums.length];
//        int i = 0, j = nums.length - 1, m = outs.length -1;
//        while (i <= j){
//            if (nums[i] * nums[i] >= nums[j] * nums[j]){
//                outs[m] = nums[i] * nums[i];
//                i++;m--;
//            }else {
//                outs[m] = nums[j] * nums[j];
//                j--;m--;
//            }
//        }
//        return outs;
//    }
//}


//二刷
class Solution {
    public int[] sortedSquares(int[] nums) {
        /**
         * 初始：头、尾下标，空数组存结果
         * 头、尾下标向中间移动，头尾比较平方值，
         */
        int left = 0, right = nums.length - 1, n = nums.length - 1;
        int[] res = new int[nums.length];
        while (left <= right){
            if (nums[left]*nums[left] > nums[right]*nums[right]) {
                res[n] = nums[left]*nums[left];
                left++;
            }else{
                res[n] = nums[right]*nums[right];
                right--;
            }
            n--;
        }
        return res;
    }
}
